package com.zx.auth.block.service;

import com.zx.auth.block.param.OAuth2AuthorizationConsentParam;
import com.zx.auth.block.vo.OAuth2AuthorizationConsentVO;
import com.zx.core.wrapper.ObjectWrapper;
import com.zx.core.wrapper.PageWrapper;
import com.zx.core.wrapper.ResponseWrapper;

/**
 * OAuth2授权同意管理服务接口
 * 定义OAuth2授权同意的业务逻辑接口
 */
public interface IOAuth2AuthorizationConsentService {

    /**
     * 根据客户端ID和主体名称获取OAuth2授权同意信息
     *
     * @param registeredClientId 注册客户端ID
     * @param principalName      主体名称
     * @return 授权同意信息
     */
    ObjectWrapper<OAuth2AuthorizationConsentVO> getAuthorizationConsent(String registeredClientId, String principalName);

    /**
     * 分页查询OAuth2授权同意列表
     *
     * @param consentParam 授权同意参数
     * @return 授权同意列表
     */
    PageWrapper<OAuth2AuthorizationConsentVO> listAuthorizationConsents(OAuth2AuthorizationConsentParam consentParam);

    /**
     * 删除OAuth2授权同意信息
     *
     * @param registeredClientId 注册客户端ID
     * @param principalName      主体名称
     * @return 删除结果
     */
    ResponseWrapper deleteAuthorizationConsent(String registeredClientId, String principalName);
}